package com.webcat.constants;

public class PromptTemplateConstant {

    public static final String RAG_PROMPT_TEMPLATE = """
            使用上下文来回答用户的问题。如果你不知道答案，就说你不知道。
                    问题: {question}
                    可参考的上下文：
                    ···
                    {context}
                    ···
                    请提供准确、相关且简洁的回答。
                    如果给定的上下文无法让你做出回答，请回答知识库中没有这个内容，我不知道。
            """;
    public static final String CHOICE_QUESTION_RAG_JSON_PROMPT_TEMPLATE = """
            使用上下文来回答用户的问题。如果你不知道答案，就说你不知道。
                    问题: {question}
                    可参考的上下文：
                    ···
                    {context}
                    ···
                    输出纯文本，结果请严格输出json格式的数据，不要包含任何解释或额外文本：
                    [
                          \\{
                            "question": "问题",
                            "options": [
                                "A. 生产事故",
                                "B. 安全生产事故",
                                "C. 职业危害事故",
                                "D. 突发公共事件",
                            ],
                            "answer": "正确答案",
                            "reference": "出的题目引用出处"
                          \\}
                    ]
                    如果给定的上下文无法让你做出回答，请严格只输出空的json格式的数据，不要包含任何解释或额外文本：
                    []
            """;
    public static final String JUDGE_QUESTION_RAG_JSON_PROMPT_TEMPLATE = """
            使用上下文来回答用户的问题。如果你不知道答案，就说你不知道。
                    问题: {question}
                    可参考的上下文：
                    ···
                    {context}
                    ···
                    输出结果请严格输出json格式的数据，不要包含任何解释或额外文本：
                    [
                          \\{
                            "question": "问题",
                            "answer": "答案",
                            "reference": "出的题目引用出处"
                          \\}
                    ]
                    如果给定的上下文无法让你做出回答，请严格只输出空的json格式的数据，不要包含任何解释或额外文本：
                    []
            """;
    public static final String EDIT_QUESTION_JSON_PROMPT_TEMPLATE = """
            将输入的上下文转为json格式输出。
                    上下文：
                    ···
                    {context}
                    ···
                    如果上下文是简答题或者判断题,输出结果请严格输出json格式的数据，不要包含任何解释或额外文本：
                    [
                          \\{
                            "question": "问题",
                            "answer": "答案",
                            "reference": "出的题目引用出处"
                          \\}
                    ]
                    如果上下文是选择题,输出结果请严格输出json格式的数据，不要包含任何解释或额外文本：
                    [
                          \\{
                            "question": "问题",
                            "options": [
                                "A. 生产事故",
                                "B. 安全生产事故",
                                "C. 职业危害事故",
                                "D. 突发公共事件",
                            ],
                            "answer": "正确答案",
                            "reference": "出的题目引用出处"
                          \\}
                    ]
                    如果给定的上下文无法让你做出回答，请严格只输出空的json格式的数据，不要包含任何解释或额外文本：
                    []
            """;
    /*public static final String DB_SELECT_PROMPT_TEMPLATE = """
            你是一个数据库专家，从数据库中查询信息。
            
            数据库信息如下:
            数据库连接地址: jdbc:postgresql://127.0.0.1:5432/readdb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
            用户名: postgres
            密码: 123456
            
            sql如下:
            CREATE TABLE "student" (
            	"name" VARCHAR ( 64 ) NOT NULL,
            	"age" int4 NOT NULL,
            );
            COMMENT ON TABLE student IS '学生信息表';
            COMMENT ON COLUMN student.name IS '姓名';
            COMMENT ON COLUMN student.age IS '年龄';
            CREATE TABLE student_score (
            	"name" VARCHAR ( 64 ) NOT NULL,
            	"score" int4 NOT NULL
            )
            COMMENT ON TABLE student_score IS '学生考试得分信息表'
            COMMENT ON COLUMN student_score.name IS '姓名'
            COMMENT ON COLUMN student_score.score IS '分数'
            表逻辑关联关系如下:
            student.name=student_score.name
          
            根据以上的sql信息执行查询：{question}，并用表格的形式返回数据。
            """;*/
    public static final String DB_SELECT_PROMPT_TEMPLATE = """
            # 本地数据库
            
            ## 定位
            你是一个postgres数据库专家。    \s
            
            ## 上下文
            sql:
            CREATE view view_sm_violate_manage as select vm.wz_no, status.label as status_name,vm.create_dept_name, vm.create_by_name, vm.wz_dtm, type_dict.label as type_name, property_dict.label as property_name,vm.wz_cash, vu.wz_user,vu.zr_dept,vu.wz_cash as wz_user_cash, vu.wz_case from sm_violate_manage vm LEFT JOIN sm_violate_user vu ON vm."id" = vu.violate_manage_id\s
            JOIN (select value, label from sys_dict WHERE type='sm_violate_manager_sta') status on vm.workflow_sta=status.value
            JOIN (select value, label from sys_dict WHERE type='sm_violate_manage_type') type_dict on vm.wz_type=type_dict.value
            JOIN (select value, label from sys_dict WHERE type='sm_violate_manage_property') property_dict on vm.wz_property=property_dict.value; \s
            comment on view view_sm_violate_manage is '反违章信息表';
            comment on column view_sm_violate_manage.wz_no is '违章编号';
            comment on column view_sm_violate_manage.status_name is '审批状态';
            comment on column view_sm_violate_manage.create_dept_name is '创建部门';
            comment on column view_sm_violate_manage.create_by_name is '创建人';
            comment on column view_sm_violate_manage.wz_dtm is '违章时间';
            comment on column view_sm_violate_manage.type_name is '违章类型';
            comment on column view_sm_violate_manage.property_name is '违章性质';
            comment on column view_sm_violate_manage.wz_cash is '违章考核金额';
            comment on column view_sm_violate_manage.wz_user is '违章人员';
            comment on column view_sm_violate_manage.zr_dept is '违章人员部门';
            comment on column view_sm_violate_manage.wz_user_cash is '违章人员考核';
            comment on column view_sm_violate_manage.wz_case is '违章原因';     \s
            
            返回字段顺序按照“违章编号”、“审批状态”、“创建人”、“创建部门”、“违章类型”、“违章性质”、“违章考核金额”、“违章时间”在前，其余字段在后
            
            ## 目的
            根据上下文操作数据库，{question}，用表格展示。
            如果给定的上下文无法让你做出回答，请说我不知道
            """;
    /*public static final String DB_SELECT_PROMPT_TEMPLATE = """
            # 本地数据库
            
            ## 定位
            你是一个postgres数据库专家。
            
            ## 要求
            先查询所有的表名与视图名以及其注释，如果表注释与视图注释相似，优先使用视图查询
            
            ## 目的
            根据上下文操作数据库，{question}，用表格展示，查询到的所有的表名以及其注释不用展示。
            """;*/
}
